/***************************************************
> Copyright (C) 2024 ==KINGYI== All rights reserved.
> File Name: client.c
> Author:cjy
> Mail: 
> Created Time: 2024年08月12日 星期一 16时18分54秒
***************************************************/
// 基于基于udp协议开发一个简易时间服务器。
// 基础通信编程

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc,const char* argv[])
{
	int sock = 0;
	int ret = 0;
	char buf[1024] = {0};
	char dest[1024] = {0};

	// 初始化结构体变量用于保存服务器地址和信息
	struct sockaddr_in serAddr;
	memset(&serAddr,0,sizeof(serAddr));

	// 创建UDP套接字 UDP标识  传输模式(报文传输)
	sock = socket(AF_INET,SOCK_DGRAM,0);
	if(sock == -1) {
		perror("socket");
		exit(-1);
	}

	// 设置地址族
	serAddr.sin_family = AF_INET;
	// 设置端口号
	serAddr.sin_port = htons(6666);
	// 设置ip
	serAddr.sin_addr.s_addr = inet_addr("192.168.198.128");
	while(1){
		printf("请输入信息:\n");
		scanf("%s",buf);
		if(strcmp(buf,"exit") == 0){
			ret = sendto(sock,buf,strlen(buf),0,(struct sockaddr *)&serAddr,sizeof(struct sockaddr));
			if(ret == -1) {
				perror("sendto");
				}
			break;
			}
		// 发送数据
		ret = sendto(sock,buf,strlen(buf),0,(struct sockaddr *)&serAddr,sizeof(struct sockaddr));
		if(ret == -1) {
			perror("sendto");
		}
		memset(&buf,0,sizeof(buf));
		
		ret = recvfrom(sock,dest,sizeof(dest),0,NULL,NULL);
		if(ret == -1){
			perror("recvfrom");
			exit(-1);
		}
		if(strcmp(dest,"exit") == 0){
			break;
		}
		printf("%s\n",dest);
		memset(&dest,0,sizeof(dest));
	}
	//关闭套接字 
	close(sock);
    return 0;
}

